import copy

# ----------------可变类型------------------
L = [1, 2, 3]
a = {'key': L}
b = copy.copy(a)

print(id(a))
print(id(b))
"""
id(a)与id(b)结果不一致，说明拷贝后新生成的对象是不同的
"""
L.append(4)  # 向a的子对象添加一个元素
print(a)  # 结果： {'key': [1, 2, 3, 4]}
print(b)  # 结果： {'key': [1, 2, 3, 4]}
"""
通过上面的执行结果可以得知，可变类型（ 列表、字典、集合）进行
浅拷贝只对可变类型的第一层对象进行拷贝，对拷贝的对象会开辟新的
内存空间进行存储，子对象不进行拷贝。
"""
# ----------------不可变类型------------------
c = 1234
d = copy.copy(c)

print(id(c))
print(id(d))
"""
id(c)与id(d)结果一致，说明拷贝后新生成的对象是相同的
通过上面的执行结果可以得知，不可变类型（数字、字符串、元组）进行浅拷贝不会给
拷贝的对象开辟新的内存空间，而只是拷贝了这个对象的引用。
"""
